home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
libs
/
maestixlib.lha
/
Maestix
/
maestix-d.adoc
< prev
next >
Wrap
Text File
|
1995-03-29
|
15KB
|
526 lines
TABLE OF CONTENTS
(V35) maestix.library/AllocMaestro
(V36) maestix.library/FlushReceive
(V36) maestix.library/FlushTransmit
(V35) maestix.library/FreeMaestro
(V35) maestix.library/GetStatus
(V35) maestix.library/ReceiveData
(V35) maestix.library/SetMaestro
(V38) maestix.library/StartRealtime
(V38) maestix.library/StopRealtime
(V35) maestix.library/TransmitData
maestix.library/AllocMaestro maestix.library/AllocMaestro
NAME
AllocMaestro -- Allokiert die Maestro-Soundkarte (V35)
SYNOPSIS
^MaestroBase = AllocMaestro (^Tags)
D0.l A0.l
FUNCTION
Diese Funktion belegt die Maestro-Soundkarte und gewährt dem
Klient den alleinigen Zugriff.
Die Karte muß als erstes allokiert werden, bevor sie ange-
sprochen werden darf.
Der Grundzustand nach AllocMaestro() ist:
Input ist INPUT_STD,
Output ist OUTPUT_BYPASS,
Studio-Modus ist abgeschaltet,
Copy-Protection ist aus,
Emphasis ist aus,
Quell-Kategorie ist DAT,
Rate ist 48kHz,
Validity ist gesetzt,
die UDBs sind zurückgesetzt.
INPUTS
Tags Reserviert für zukünftige Optionen. Momentan
immer NULL oder ein Zeiger auf TAG_DONE über-
geben.
RESULTS
MaestroBase Zeiger auf die MaestroBase-Struktur (privat)
oder NULL, wenn die Karte bereits belegt wurde,
nicht vorhanden ist oder der Speicher nicht
ausreichte.
NOTES
Diese Funktion darf nur aus einem DOS-Prozeß aufgerufen werden.
SEE ALSO
FreeMaestro()
BUGS
Leider kann nicht verhindert werden, daß eines der MacroSystem-
Programme (also MaestroBR und Samplitude) die Karte nach einem
AllocMaestro() immer noch belegen können.
Diese Funktion versucht zwar auch herauszubekommen, ob ein sol-
ches Programm die Karte bereits belegt hat, und verhindert dann
seinerseits die Belegung. Der Versuch ist allerdings nicht immer
erfolgreich! Seit V37 wurde dieser Test wieder entfernt, da er
bei älteren Maestros manchmal ungerechtfertigt fehlschlug. Die
Programme AllocMstx und FreeMstx lösen das Problem.
maestix.library/FlushReceive maestix.library/FlushReceive
NAME
FlushReceive -- Stoppt Empfang und gibt Msg zurück (V36)
SYNOPSIS
FlushReceive (^MaestroBase)
A0.l
FUNCTION
Der Empfangsvorgang wird gestoppt.
Alle durch ReceiveData() an die Maestix gesendeten Nachrichten
werden zurückgesendet.
INPUTS
MaestroBase Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
RESULTS
NOTES
SEE ALSO
FlushTransmit(), ReceiveData()
BUGS
maestix.library/FlushTransmit maestix.library/FlushTransmit
NAME
FlushTransmit -- Stoppt Sendung und gibt Msg zurück (V36)
SYNOPSIS
FlushTransmit (^MaestroBase)
A0.l
FUNCTION
Der Sendevorgang wird gestoppt.
Alle durch TransmitData() an die Maestix gesendeten Nachrichten
werden zurückgesendet.
INPUTS
MaestroBase Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
RESULTS
NOTES
SEE ALSO
FlushReceive(), TransmitData()
BUGS
maestix.library/FreeMaestro maestix.library/FreeMaestro
NAME
FreeMaestro -- Gibt die Maestro-Soundkarte frei (V35)
SYNOPSIS
FreeMaestro (^MaestroBase)
A0.l
FUNCTION
Nach dem Gebrauch muß der Klient die belegte Karte wieder
freigeben. Das geschieht durch diese Funktion.
Alle an Maestix gesendete Nachrichten werden zurückgesendet.
Die FIFOs werden gelöscht, die Karte wird zurückgesetzt und
geht in den Bypass-Modus über.
INPUTS
MaestroBase Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
RESULTS
NOTES
Diese Funktion darf nur aus einem DOS-Prozeß aufgerufen werden.
SEE ALSO
AllocMaestro()
BUGS
maestix.library/GetStatus maestix.library/GetStatus
NAME
GetStatus -- Gibt den Kartenstatus zurück (V35)
SYNOPSIS
Status = GetStatus (^MaestroBase,Info-Typ)
D0.l A0.l D0.l
FUNCTION
Er Zustand vom gewünschten Info-Typ wird zurückgegeben.
INPUTS
MaestroBase Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
Info-Typ Typ-Code (MSTAT_...), dessen Wert zurückge-
geben werden soll.
RESULTS
Status Status des entsprechenden Typs.
NOTES
Es existieren folgende Info-Typen:
MSTAT_TFIFO Zustand der Transmitter-FIFO
- FIFO_Off -> Transmitter ist aus
- FIFO_Running -> Übertragung läuft
- FIFO_Error -> seit der letzten Abfrage
trat ein Fehler auf
MSTAT_RFIFO Zustand der Receiver-FIFO
- FIFO_Off -> Transmitter ist aus
- FIFO_Running -> Übertragung läuft
- FIFO_Error -> seit der letzten Abfrage
trat ein Fehler auf
MSTAT_Signal prüft, ob ein Signal am gewünschten INPUT
anliegt (BOOL).
MSTAT_Emphasis gibt an, ob das Eingangssignal mit Emphasis
aufgenommen wurde (BOOL).
MSTAT_DATsrc gibt an, ob die Datenquelle ein DAT- bzw.
DCC-Recorder ist (BOOL).
MSTAT_CopyProh zeigt, ob ein Urheberrechtschutz vom Quell-
signal gewünscht wird (BOOL). Ob es sich um
eine Kopie handelt, läßt sich jedoch nicht
feststellen.
MSTAT_Rate gibt die Rate am Eingang an (ULONG).
MSTAT_UDB [V37] gibt die aktuellen UDBs zurück (UBYTE).
SEE ALSO
BUGS
maestix.library/ReceiveData maestix.library/ReceiveData
NAME
ReceiveData -- Empfängt Daten in eine Message (V35)
SYNOPSIS
ReceiveData (^MaestroBase, ^Message)
A0.l A1.l
FUNCTION
Dies ist die Funktion zur Übertragung von Daten durch die
Maestro.
Der Platz für die eingehenden Daten wird in einer normalen
System-Message zur Verfügung gestellt. Diese Message muß einen
Zeiger auf den Reply-Port vom Klienten haben. Außerdem wird in
der Message ein Zeiger auf den zu füllenden Puffer sowie dessen
Länge übergeben.
Diese Message wird nun in die Eingangs-Queue eingehängt. Sollte
der Empfangsvorgang noch nicht gestartet worden sein, geschieht
dies danach.
Wenn der Datenpuffer durch die eingehenden Daten gefüllt wurde,
wird die Message an den Klienten replyed. Er kann nun die Daten
bearbeiten und anschließend die Message erneut absenden.
Sollten die Messages ausbleiben, wird der Einlesevorgang abge-
brochen, wenn die Receive-FIFO überläuft.
INPUTS
MaestroBase Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
Message Zeiger auf eine System-Message mit einem Zeiger
auf den Datenpuffer für die eingehenden Daten.
RESULTS
NOTES
Der Datenpuffer muß Public Memory sein und an einer durch 4
teilbaren Adresse beginnen. Die Datenpuffer-Länge muß mindestens
10KByte betragen und durch 1024 teilbar sein.
Vorher sollte ein evtl. laufender Realtime-Effekt gestoppt wer-
den.
SEE ALSO
TransmitData(), FlushReceive(), StopRealtime()
BUGS
maestix.library/SetMaestro maestix.library/SetMaestro
NAME
SetMaestro -- Stellt die Maestro-Parameter ein (V35)
SYNOPSIS
SetMaestro (^MaestroBase, ^Tags)
A0.l A1.l
FUNCTION
Die Kartenparameter werden verändert. Hierzu werden der
Funktion Tags übergeben.
INPUTS
MaestroBase Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
Tags Tags, die die Einstellungen angeben.
RESULTS
TAGS
MTAG_Input (ULONG) gibt den Eingang an, den die Maestro
verwenden soll. Default ist INPUT_STD, was
den Standard-Eingang verwendet. Dies ist mo-
mentan der optische Eingang, wird in zukünf-
tigen Versionen aber vom Benutzer konfigurier-
bar sein. Mit INPUT_OPTICAL und INPUT_COAXIAL
kann aber auch gezielt ein Eingang ausgewählt
werden. INPUT_SRC48K wählt eine interne Quelle,
welche konstant einen 48kHz-Referenztakt lie-
fert, unabhängig vom Eingangssignal.
MTAG_Output (ULONG) gibt an, welches Signal am Ausgang vor-
liegt. Default ist OUTPUT_BYPASS, womit das am
gewählten Eingang anliegende Signal direkt zum
Ausgang weitergeleitet wird. OUTPUT_INPUT gibt
das vom Encoder codierte Eingangssignal am Aus-
gang aus. So können gezielt UDBs und CSBs ge-
ändert werden. Mit OUTPUT_FIFO wird das Signal
von der Transmit-FIFO an den Ausgang gelegt.
MTAG_SetCSB (ULONG) Die angegebenen 32 Bit werden als
Channel Status Bits durch den Encoder ausgege-
ben. Dieses Tag sollte nur in Ausnahmefällen
verwendet werden!
MTAG_SetUDB (ULONG) Die angegebenen 32 Bit werden als
User Data Bits durch den Encoder ausgegeben.
MTAG_Studio (BOOL) Ist dieses Tag TRUE, wird in den
Studio-Modus geschaltet und die CSBs ent-
sprechend dieser Norm kodiert. Im Heimbereich
sollte dieser Modus immer FALSE sein (default).
MTAG_CopyProh (ULONG) gibt an, ob ein Kopieschutz verwendet
werden soll. Default ist CPROH_OFF, was einen
Kopierschutz abschaltet. CPROH_ON aktiviert
den Kopierschutz und erlaubt noch eine digi-
tale Kopie der Ausgangssignals. CPROH_PROHIBIT
sperrt eine digitale Aufnahmemöglichkeit.
CPROH_INPUT schaltet den Kopierschutz ent-
sprechend dem Eingangssignal aus oder ein.
MTAG_Emphasis (ULONG) gibt die Emphasis des Ausgangssignals
an. Default ist EMPH_OFF, was keine Emphasis
angibt. Standard ist EMPH_50us ( = EMPH_ON);
im Studio-Modus steht außerdem noch EMPH_CCITT
und EMPH_MANUAL zur Verfügung. EMPH_INPUT
wählt die Emphasis entsprechend dem Eingangs-
signal.
MTAG_Source (ULONG) gibt den Quellen-Kategoriecode an.
Default ist SRC_DAT, außerdem sind SRC_CD,
SRC_DSR, SRC_ADCONV und SRC_INSTR angegeben.
Mit SRC_INPUT wird gemäß dem Eingangssignal
zwischen SRC_DAT und SRC_CD umgeschaltet.
MTAG_Rate (ULONG) gibt die Datenrate an. Default ist
RATE_48000, ansonsten existieren RATE_44100,
RATE_32000 und RATE_48000MANU. RATE_INPUT
wählt die Rate gemäß dem Eingangssignal.
MTAG_Validity (BOOL) gibt die Gültigkeit des ausgehenden
Signals an. Ist dieses Tag FALSE, sind die
Daten ungültig, was von vielen Endgeräten
erkannt wird.
MTAG_ResetUDB Wenn dieses Tag angegeben wird, wird die UDB-
Information gelöscht und eine Ausgabe der
UDBs unterbunden.
MTAG_ResetLSA [V37] Wenn dieses Tag angegeben wird, wird die
Local-Sample-Address gelöscht. Diese findet in
der Übertragung im Studio-Format verwendung.
NOTES
Beachten Sie, daß MTAG_Rate lediglich in das Ausgabesignal ver-
woben wird, jedoch keine Rate auf der Maestro einstellt.
Die Maestro ist lediglich in der Lage, eine 48kHz-Rate zu er-
zeugen (INPUT_SRC48K). Davon abweichende Raten müssen am aus-
gewählten Eingang angelegt werden.
Stimmt die MTAG_Rate nicht mit dem tatsächlichen Takt überein,
kann das Signal in der Regel vom Empfänger nicht bearbeitet
werden.
Achtung: Diese Funktion darf nur aus einem DOS-Prozeß aufgeru-
fen werden!
SEE ALSO
BUGS
maestix.library/StartRealtime maestix.library/StartRealtime
NAME
StartRealtime -- Startet einen Realtime-Effekt (V38)
SYNOPSIS
StartRealtime (^MaestroBase, ^Tags)
A0.l A1.l
FUNCTION
Ein Realtime-Effekt wird gestartet. Vorher sollte der entsprech-
ende Eingang ausgewählt und OUTPUT_FIFO eingestellt werden.
INPUTS
MaestroBase Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
Tags Tags, die die Effektparameter angeben.
RESULTS
TAGS
MTAG_Effect Wählt einen eingebauten Effekt aus (default:
RFX_Bypass). Effekte siehe Includedatei.
MTAG_A0 Parameter für die Effekte
MTAG_A1 Parameter für die Effekte
MTAG_D2 Parameter für die Effekte
MTAG_D3 Parameter für die Effekte
MTAG_CustomCall (APTR) Zeiger auf eine eigene Effekt-Routine.
NOTES
Die eigene Effekt-Routine bekommt folgende Parameter übergeben:
-> D0 (WORD) linkes Datenwort
-> D1 (WORD) rechtes Datenwort
-> D2 (ULONG) siehe MTAG_D2
-> D3 (ULONG) siehe MTAG_D3
-> D6 (ULONG) Scratch-Register
-> D7 (ULONG) Scratch-Register
-> A0 (ULONG) siehe MTAG_A0
-> A1 (ULONG) siehe MTAG_A1
-> A2 (APTR) Rücksprungadresse.
Die Routine liefert:
<- D0 (WORD) neues linkes Datenwort
<- D1 (WORD) neues rechtes Datenwort
Die Register D2 bis D5 und A0 bis A7 dürfen nicht verändert wer-
den.
Der Rücksprung aus der Effekt-Routine erfolgt mit "JMP (A2)", und
nicht etwa mit RTS!
Die Effekt-Routine muß im MEMF_PUBLIC-Bereich stehen! Zu beachten
ist hier, daß ein Task nicht unbedingt im MEMF_PUBLIC-Bereich ge-
startet wird! Die Routine sollte außerdem in hochoptimiertem As-
semblercode geschrieben sein.
Wenn die Effektroutine zu langsam ist, stoppt die Realtime-Funk-
tion automatisch, und MSTAT_TFIFO sowie MSTAT_RFIFO melden
FIFO_Error.
SEE ALSO
StopRealtime()
BUGS
maestix.library/StopRealtime maestix.library/StopRealtime
NAME
StopRealtime -- Stoppt den Realtime-Effekt (V38)
SYNOPSIS
StopRealtime (^MaestroBase)
A0.l
FUNCTION
Ein zuvor gestarteter Realtime-Effekt wird durch diese Funktion
wieder gestoppt.
INPUTS
MaestroBase Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
RESULTS
NOTES
Vor einem TransmitData() oder ReceiveData() muß ein eventuell
laufender Realtime-Effekt durch diese Funktion gestoppt werden.
SEE ALSO
StartRealtime()
BUGS
maestix.library/TransmitData maestix.library/TransmitData
NAME
TransmitData -- Überträgt Daten in einer Message (V35)
SYNOPSIS
TransmitData (^MaestroBase, ^Message)
A0.l A1.l
FUNCTION
Dies ist die normale Funktion zur Übertragung von Daten durch
die Maestro.
Die abgehenden Daten werden durch eine normale System-Message
zur Verfügung gestellt. Diese Message muß einen Zeiger auf den
Reply-Port vom Klienten haben. Außerdem wird in der Message ein
Zeiger auf den auszugebenden Puffer sowie dessen Länge übergeben.
Diese Message wird nun in die Ausgabe-Queue eingehängt. Sollte
die Ausgabe noch nicht gestartet worden sein, geschieht dies
danach.
Wenn die Daten ausgegeben wurden, wird die Message an den Kli-
enten replyed. Er kann den Pufferbereich nun mit neuen Daten
füllen und erneut absenden.
Sollten die Messages ausbleiben, wird die Ausgabe abgebrochen,
sobald die Transmit FIFO vollständig geleert wurde.
INPUTS
MaestroBase Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
Message Zeiger auf eine System-Message mit den aus-
zugebenden Daten.
RESULTS
NOTES
Der Datenpuffer muß Public Memory sein und an einer durch 4
teilbaren Adresse beginnen. Die Datenpuffer-Länge muß mindestens
10KByte betragen und durch 1024 teilbar sein.
Vorher sollte ein evtl. laufender Realtime-Effekt gestoppt wer-
den.
SEE ALSO
ReceiveData(), FlushTransmit(), StopRealtime()
BUGS